package org.me.service.impl;

import java.util.List;
import org.me.data.GenericDaoJdbc;
import org.me.entityBeans.TPaises;
import org.me.service.PaisServiceJdbc;

public class PaisServiceJdbcImpl implements PaisServiceJdbc{
    
    private GenericDaoJdbc genericDaoJdbcImpl;

    private String querySELECT;//Para la paginacion se guarda la query buscada 
    private String queryCOUNT;
    private Integer numPaisesActualizados;
        
    public PaisServiceJdbcImpl() {
        //this.query = null;
    }
    
    public GenericDaoJdbc getGenericDaoJdbcImpl() {
        return genericDaoJdbcImpl;
    }

    public void setGenericDaoJdbcImpl(GenericDaoJdbc genericDaoJdbcImpl) {
        this.genericDaoJdbcImpl = genericDaoJdbcImpl;
    }

    private String getQueryCOUNT() {
        return queryCOUNT;
    }

    private void setQueryCOUNT(String queryCOUNT) {
        this.queryCOUNT = queryCOUNT;
    }

    private String getQuerySELECT() {
        return querySELECT;
    }

    private void setQuerySELECT(String querySELECT) {
        this.querySELECT = querySELECT;
    }

    private void setNumPaisesActualizados(Integer numPaisesActualizados) {
        this.numPaisesActualizados = numPaisesActualizados;
    }

    @Override
    public Integer getNumPaisesActualizados() {
        return numPaisesActualizados;
    }
        
    @Override
    public List<TPaises> findPaises(Integer umbInferior, Integer umbSuperior, String pais, String opcion) {
        String filtro = "";
        String queryEnviar = "";
       
        //Si es boton ejecutar se crea la sentencia y se guarda en this.query
        //Si es LINKS_PAGINACION recupera la query
        if(opcion.equals("BOTON_EJECUTAR")) //la 1ra vez (cuando se presiona el boton ejecutar)
        {
            this.querySELECT = "SELECT * FROM omega.t_paises WHERE 1=1 "; //inicializamos, se usa WHERE 1=1 para luego concatenar la sentencia con AND...
            this.queryCOUNT = "SELECT COUNT(*) FROM omega.t_paises WHERE 1=1 "; //inicializamos
            
            if(pais != "" )
            {
                filtro = "AND v_nombre_pais LIKE '%" + pais + "%'";
                this.querySELECT = this.querySELECT + filtro;
                this.queryCOUNT = this.queryCOUNT + filtro;
            }            
            this.querySELECT = this.querySELECT + " ORDER BY n_id_pais_pk "; //Siempre hace esta instruccion cuando es BOTON_EJECUTAR 
            
        }        
       /* else if(opcion.equals("LINKS_PAGINACION")) //cuando se navega con los links de la paginacion, le mandamos la query grabada
            this.query = squery;  */
        
        this.numPaisesActualizados = this.getGenericDaoJdbcImpl().find2(Integer.class, this.queryCOUNT, null);//trae num total de paises actualizado de la BD segun criterio/os
        
        queryEnviar = " SELECT * FROM ( SELECT a.*, rownum rnum FROM (" + this.querySELECT + ") a WHERE rownum <= " +  umbSuperior
                                   + " ) WHERE rnum >= " +  umbInferior;
           
        return this.getGenericDaoJdbcImpl().find(TPaises.class, queryEnviar, null);
    }  
    
    
}
